package org.example.edusmart.service;

import org.example.edusmart.pojo.UserPojo;
import org.example.edusmart.pojo.UserRolePojo;
import org.example.edusmart.request.admin.RoleListPojo;
import org.example.edusmart.request.admin.UserInfoPojo;

import java.util.HashMap;
import java.util.List;

public interface UserService {
    /**
     * 根据用户名查找用户
     *
     * @param username 用户名
     */
    UserPojo checkUserByUsername(String username);

    /**
     * 查找邮箱
     *
     * @param email 邮箱
     */
    UserPojo checkEmail(String email);

    /**
     * 注册用户
     *
     * @param insertParameter 前端传相应值
     */
    void addUser(HashMap<String, Object> insertParameter);

    /**
     * 为用户赋权
     *
     * @param userRole 数据
     */
    void insertUserRole(UserRolePojo userRole);

    /**
     * 插入学工号
     *
     * @param number 学工号
     */
    void insertNumber(HashMap<String, Object> number);

    /**
     * 查询权限
     *
     * @param userID 用户id
     */
    List<String> checkPermission(Integer userID);

    /**
     * 通过用户id查找用户
     *
     * @param userId 用户id
     */
    UserPojo getUserByUserId(String userId);

    /**
     * 替换密码
     *
     * @param newPassword 新密码
     */
    void changePassword(HashMap<String, Object> newPassword);

    /**
     * 修改个人信息
     *
     * @param info 修改信息
     */
    void changeUserInfo(HashMap<String, Object> info);

    /**
     * 返回用户表的用户
     *
     * @return 用户的部分个人信息
     */
    List<HashMap<String, Object>> allUserInfo(UserInfoPojo userInfoPojo);

    /**
     * 根据学工号查找不属于当前用户的角色信息
     *
     * @param roleListPojo 学工号
     * @return 信息
     */
    List<HashMap<String, Object>> getRoleList(RoleListPojo roleListPojo);

    /**
     * 根据用户id改用户角色
     * @param info id
     * @return 是否更改成功
     */
    Integer changeUserRoleByUserid(HashMap<String,Object> info);

    /**
     * 获得当前用户身份
     * @param userId 用户id
     * @return 身份信息
     */
    String getUserRole(String userId);
}
